CREATE TABLE IF NOT EXISTS people_money(
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    money DECIMAL(10,2) NOT NULL DEFAULT 0.00
);
INSERT INTO people_money (name, money) VALUES ('张三', 100.00), ('李四', 100.00), ('王五', 100.00);
SELECT * FROM people_money;
DROP TABLE IF EXISTS people_money;
SHOW TABLES;
-- 数据库事务具有ACID这4个特性：
-- A：Atomicity，原子性，将所有SQL作为原子工作单元执行，要么全部执行，要么全部不执行；
-- C：Consistency，一致性，事务完成后，所有数据的状态都是一致的，即A账户只要减去了100，B账户则必定加上了100；
-- I：Isolation，隔离性，如果有多个事务并发执行，每个事务作出的修改必须与其他事务隔离；
-- D：Durability，持久性，即事务完成后，对数据库数据的修改被持久化存储。
-- 使用BEGIN开启一个事务，使用COMMIT提交一个事务，这种事务被称为显式事务，


-- COMMIT是指提交事务，即试图把事务内的所有SQL所做的修改永久保存。如果COMMIT语句执行失败了，整个事务也会失败。
BEGIN;
UPDATE people_money SET money = money - 10.00 WHERE name = '张三';
UPDATE people_money SET money = money + 10.00 WHERE name = '李四'; 
COMMIT;

-- ROLLBACK回滚事务，整个事务会失败
SELECT * FROM people_money;
BEGIN;
UPDATE people_money SET money = money - 10.00 WHERE name = '张三';
SELECT * FROM people_money;
ROLLBACK;
SELECT * FROM people_money;